package com.dudu.service;

import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.dudu.bean.AccountBean;
import com.dudu.bean.AppExtendBean;
import com.dudu.bean.ParamBean;

/**
 * 运营平台相关调用
 * @author 危东
 * @date 2016-4-20
 */
public interface IOperationPlatformService {
	/**
	 * 6.2　客户信息接口
	 * 根据账号查询账号信息
	 * @param cust_account
	 * @return
	 */
	public JSONObject queryCustomerInfo(String cust_account);
	/**
	 * 6.5　授权认证接口upd
	 * 用于处理用户信息-在运营平台注册
	 * @param peripheryCode 系统对接码
	 * @param custAccount 账号custAccount标识
	 * @param userIdentify 用户标识
	 * @return
	 */
	public boolean manageUserByOP(String peripheryCode, String custAccount, String userIdentify);
	/**
	 * 6.5　授权认证接口 
	 * 3 账号注册接口（不合并）
  	 *	用户选择不进行合并账号，想生成一个新的账号。
	 * @param object 返回值
	 * @param appKey 应用标识
	 * @param peripheryCode 系统接入码
	 * @param companyIdentify 企业标识
	 * @param relevanceCode 账号关联码
	 * @param relevancePhone 手机号码
	 * @param channelAccount 渠道码
	 * @param companyName 企业名称
	 * @param linker  联系人姓名
	 * @param email 邮箱
	 * @return
	 */
	public String accountRegiste(JSONObject object, String appKey, String peripheryCode, String companyIdentify, String relevanceCode, String relevancePhone, String channelAccount, String companyName, String linker, String email);
	/**
	 * 6.13　客户信息修改接口
	 * 6、账号更新接口（不合并，普通的更新接口）---与3对应
   	 *	信息账号的基本信息。
   	 *	返回：账号基本信息
	 * @param cust_account 客户账号
	 * @param email //管理员账号邮箱
	 * @param relevancePhone //管理员手机号
	 * @param channelAccount //渠道码
	 * @param companyName //企业名称
	 * @return
	 */
	public JSONObject UpdateCustomerInfo(String cust_account,String email,String relevancePhone,String channelAccount,String companyName);
	/**
	 * 6.30	可用余额资源汇总接口
	 * @param app_key
	 * @param cust_account
	 * @return
	 */
	public JSONObject queryResourceAccountSum(String app_key,String cust_account);
	/**
	 * 6.35　查询ISV分页接口
	 * 查询ISV 分页
	 * @param isv_id
	 * @param isv_name
	 * @param page_no    页码
	 * @param page_size  每页显示数据数量
	 * @return
	 */
	public List<ParamBean> queryIsvItems(String isv_id, String isv_name,Integer page_no, Integer page_size);
	/**
	 * 6.36　查询APP分页接口
	 * 查询app 分页基础接口
	 * @param isvName
	 * @param app_name
	 * @param app_key
	 * @param page_no 页码
	 * @param page_size 每页显示数据数量
	 * @return
	 */
	public JSONObject queryAppItems(String isvName,String app_name,String app_key,Integer page_no,Integer page_size);
	/**
	 * 6.37　验证产品余额接口
	 * 运营平台验证账号是否可用
	 * @param object
	 * @param appExtendBean
	 * @param accountBean
	 * @param abilityType 
	 * @return
	 */
	public boolean platformAuthentication(JSONObject object,AppExtendBean appExtendBean,AccountBean accountBean,String abilityType);
	/**
	 * 6.38　由关联关系查询计费账号信息列表接口
	 * 1  账号信息列表接口
  	 * H5页面在注册前，H5页面输入“关联码”、关联手机号等然后调用此接口。
     * 返回与关联码一致的所有账号，让用户进行选择。
	 * @param periphery_code  外围系统编码
	 * @param mobile 手机号码
	 * @param relatedCode 嘟嘟关联账号
	 * @return
	 */
	public JSONObject queryCustAccountByRelateInfo(String periphery_code,String mobile,String relatedCode);
	/**
	 * 6.40　合并计费账户接口
	 * @param cust_account 主账号信息
	 * @param accounts   被合并的账号信息
	 * @return
	 */
	public JSONObject CombineCustAccount(String cust_account,JSONArray accounts);
	/**
	 * 6.41　查询企业所在的应用列表接口
	 * 查询账号(企业 )信息接口
	 * @param page_no 当前页
	 * @param pageSize 一页显示多少条
	 * @param isv_name ISV名称
	 * @param app_name 应用名称
	 * @param cust_account 账号标识
	 * @return 
	 */
	public JSONObject queryItems(Integer page_no, Integer pageSize,String isv_name,String app_name,String cust_account);
	/**
	 * 6.42　授权账号注册（强制合并T）接口
	 *  4、账号注册（强制合并）接口
  	 *	客户调用此接口，只要是关联码一致的账号全部合成一个新的账号。
  	 *	返回：主账号信息，副账号信息（被合并的账号）
	 * @param periphery_code 外系统编码
	 * @param company_identify 企业（个人）标识
	 * @param email  邮箱
	 * @param relevancePhone 关系手机号
	 * @param app_key  应用标识
	 * @param channelAccount 渠道码
	 * @param companyName 企业名称
	 * @param linker 联系人
	 * @param relatedCode 关联码
	 * @return
	 */
	public JSONObject OauthCombineForceInterface(String periphery_code,String company_identify,String email,String relevancePhone,String app_key,String channelAccount,String companyName,String linker,String relatedCode);
	/**
	 * 6.43　客户信息修改（强制合并T）接口
	 * 7、账号更新（强制合并）接口--与4对应
   	 *	客戾调用更新接口时输入关联码，强制把关联码一致的账号全部合成一个新的账号。
   	 *	返回：主账号信息，副账号信息（被合并的账号）
   	 * @param appKey
   	 * @param cust_account 客户账号
	 * @param email //管理员账号邮箱
	 * @param relevancePhone //管理员手机号
	 * @param channelAccount //渠道码
	 * @param companyName //企业名称
	 * @param relatedCode //嘟嘟关联账号
	 * @return
	 */
	public JSONObject UpdateCustomerForceInfo(String appKey,String cust_account,String email,String relevancePhone,String channelAccount,String companyName,String relatedCode);
	/**
	 * 6.44　授权账号注册（合并）接口
	 * 2、账号合并接口
  	 * 用户选择完主账号，副账号（被合并的账号）调用此接口进行合并操作。
	 * @param periphery_code 外围系统编码
	 * @param app_key  应用标识
	 * @param company_identify
	 * @param channelAccount 渠道码
	 * @param relatedCode 账号关联码
	 * @param cust_account 主账号
	 * @param accounts 被合并账号此为JSONArray(combine_cust_account)
	 * @return
	 */
	public JSONObject OauthCombineInterface(String periphery_code,String app_key,String company_identify,String channelAccount,String relatedCode,String cust_account,JSONArray accounts );
	/**
	 * 6.45　客户信息修改接口（不合并）
	 * 5、账号更新接口---与1对应。
  	 *	H5页面在做账号更新前，H5页面输入“关联码”、关联手机号等然后调用此接口。
  	 *	返回与关联码一致的所有账号，让用户进行选择。
	 * @param cust_account 客户账号
	 * @param email //管理员账号邮箱
	 * @param relevancePhone //管理员手机号
	 * @param channelAccount //渠道码
	 * @param companyName //企业名称
	 * @param relatedCode //嘟嘟关联账号
	 * @return
	 */
	public JSONObject UpdateCustomerCombineInfos(String cust_account,String email,String relevancePhone,String channelAccount,String companyName,String relatedCode);
	/**
	 * 6.46　订购应用下所有产品接口
	 * 运营平台订购相关
	 * @param object 返回值
	 * @param appKey 应用标识
	 * @param custAccount 账号编码
	 * @return
	 */
	public boolean platformOrder(JSONObject object, String appKey, String custAccount);
	/**
	 * 6.47　更新关联关系并查询计费账号信息列表接口
	 * 更新关联码,并返回账号列表
	 * @param cust_account
	 * @param app_key
	 * @param mobilePhone
	 * @param channel_account
	 * @param relatedCode
	 * @param periphery_code
	 * @return
	 */
	public JSONObject updQueryCustAccountByRelateInfo(String cust_account,String app_key,String mobilePhone,String channel_account,String relatedCode,String periphery_code,String email);
	
	/**
	 * 1.51　统计注册数目接口
	 * 统计日新增数
	 * @param oauth_date
	 * @return
	 */
	public List<JSONObject> queryRegisterNum(String oauth_date);
	
}
